'use strict';

// 在uniCloud云函数中，不需要手动导入uni-cloud模块，它是自动注入的
exports.main = async (event, context) => {
  // 直接使用全局的uniCloud对象获取数据库实例
  const db = uniCloud.database();
  const { username, phone, password } = event;
  
  // 参数验证
  if (!username || !phone || !password) {
    return {
      code: 400,
      message: '请填写完整的注册信息'
    };
  }
  
  try {
    // 检查用户名是否已存在
    const userRes = await db.collection('uni-id-users')
      .where({
        username: username
      })
      .get();
      
    if (userRes.data.length > 0) {
      return {
        code: 10001,
        message: '用户名已存在'
      };
    }
    
    // 检查手机号是否已存在
    const phoneRes = await db.collection('uni-id-users')
      .where({
        phone: phone
      })
      .get();
      
    if (phoneRes.data.length > 0) {
      return {
        code: 10002,
        message: '手机号已被注册'
      };
    }
    
    // 使用直接的数据库操作创建用户
    // 由于不能使用uni-id模块，我们直接插入用户数据
    // 注意：实际生产环境中应该使用密码加密，这里简化处理
    const now = new Date();
    const userData = {
      username,
      phone,
      password: password, // 简化处理，实际应加密
      wxapp_openid: context.OPENID || '',
      register_time: now,
      create_time: now,
      update_time: now
    };
    
    // 插入用户到uni-id-users集合
    const addResult = await db.collection('uni-id-users').add(userData);
    
    // 获取插入的用户ID
    const userId = addResult.id;
    
    // 创建用户信息扩展表
    await db.collection('userInfo').add({
      data: {
        user_id: userId,
        avatar_url: '',
        nickname: username,
        gender: 0,
        create_time: new Date(),
        update_time: new Date()
      }
    });
    
    return {
      code: 0,
      message: '注册成功',
      uid: userId
    };
  } catch (error) {
    console.error('注册失败:', error);
    return {
      code: 500,
      message: '注册失败，请稍后重试'
    };
  }
};